package org.example.test.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

public class SaveImage {

    /**
     * 保存上传的图片文件到服务器
     *
     * @param file 上传的 MultipartFile 文件
     * @return 文件保存的相对路径，供前端访问
     * @throws IOException 文件保存失败时抛出异常
     */
    public static String saveFile(MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            throw new IOException("上传的文件为空");
        }

        // 定义上传目录（相对于项目根目录）
        String uploadDir = System.getProperty("user.dir") + File.separator + "uploads";
        File dir = new File(uploadDir);
        if (!dir.exists()) {
            dir.mkdirs();  // 如果目录不存在则创建
        }

        // 生成唯一文件名：UUID + 时间戳 + 后缀
        String originalFilename = file.getOriginalFilename();
        String fileExtension = getFileExtension(originalFilename);
        String uniqueFileName = UUID.randomUUID() + "_" + getCurrentTimestamp() + fileExtension;

        // 保存文件
        String filePath = uploadDir + File.separator + uniqueFileName;
        File dest = new File(filePath);
        file.transferTo(dest);

        // 返回文件的相对路径（可以通过 HTTP 访问）
        return "http://localhost:8081/uploads/" + uniqueFileName;  // 返回相对路径，供前端访问
    }

    // 获取文件扩展名
    private static String getFileExtension(String fileName) {
        if (fileName != null && fileName.lastIndexOf(".") != -1) {
            return fileName.substring(fileName.lastIndexOf("."));
        }
        return "";
    }

    // 获取当前时间戳
    private static String getCurrentTimestamp() {
        return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
    }
}
